之前我們講過Laravel中的Route,Route除了用來回傳相應View之外,我們也可以使用Controller來做回應。
當有請求送來時,我們可能不只是回應一個頁面給對方就好,可能還有一系列的行為,Controller就是用來組織這些互相關聯的行為。
雖然也可以手動自己新增Controller,不過在Artisan中已經有內建指令可以直接幫你生成Controller了(所以說有Artisan真的會比較方便呢):
php artisan make:controller YourController
這個指令會直接在app/HTTP/Controllers
資料夾中生成符合格式的Controller PHP檔。
新生成的Controller文件:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
//
}
先來做點比較簡單的,來印出一段文字:
class TestController extends Controller
{
public function show()
{
return "S'il faut mourir, autant vivre à en crever";
}
}
然後在web.php
中新增路由導向到我們剛才生成的Controller:
Route::get('/Test', 'TestController@show');
打開瀏覽器就能看到我們剛才寫好的文字:)
另外也可以處理參數傳遞:
// firstpage.blade.php
<div>
<h1>Hello, {{ $name }}.</h1>
</div>
// TestController.php
public function hi($name) {
return view('firstpage', array('name' => $name));
}
// web.php
Route::get('/Test/{name}', 'TestController@hi');
另外還有一種Resource Controller,可以把CRUD的路由都指向同一個Controller,要新增的話可以使用參數:
php artisan make:controller MyController --resource
生成出來的文件就會把可能需要的方法都先幫你寫出來,只需要按照註解去改程式碼就好。(Artisan真的很方便)